package com.ym.medical.service;

import com.ym.core.utils.qiniu.QNKeyEnum;
import com.ym.medical.domain.entity.FileInforEntity;
import com.ym.medical.enums.FileTypeEnum;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.InputStream;
import java.util.Map;

/**
 * 文件信息Service接口
 *
 * @author ym
 * @date 2020-08-17
 */
public interface IFileInforSV {

	/**
	 * 查找
	 *
	 * @param id
	 * @return
	 */
	FileInforEntity selectByStringId(String id);

	/**
	 * 上传
	 *
	 * @param file     文件
	 * @param fileType 文件类型
	 * @param table    表
	 * @param field    字段
	 * @param remark   备注
	 * @param upPerson 上传人
	 * @return
	 */
	String uploadFile(MultipartFile file, FileTypeEnum fileType, String table, String field, String remark, Long upPerson);

	/**
	 * 上传
	 *
	 * @param file     文件
	 * @param fileType 文件类型
	 * @param table    表
	 * @param field    字段
	 * @param remark   备注
	 * @param upPerson 上传人
	 * @return
	 */
	String uploadFile(File file, FileTypeEnum fileType, String table, String field, String remark, Long upPerson);

	/**
	 * 上传
	 *
	 * @param is       流
	 * @param fileType 文件类型
	 * @param table    表
	 * @param field    字段
	 * @param remark   备注
	 * @param upPerson 上传人
	 * @return
	 */
	String uploadFile(InputStream is, FileTypeEnum fileType, String fileName, String table, String field, String remark, Long upPerson);

	/**
	 * 上传
	 *
	 * @param data     数据
	 * @param fileType 文件类型
	 * @param table    表
	 * @param field    字段
	 * @param remark   备注
	 * @param upPerson 上传人
	 * @return
	 */
	String uploadFile(byte[] data, FileTypeEnum fileType, String fileName, String table, String field, String remark, Long upPerson);


	/**
	 * 根据附件类型获取枚举
	 *
	 * @param fileType
	 * @return
	 */
	QNKeyEnum getKeyEnumByFileType(FileTypeEnum fileType);

	/**
	 * 根据附件类型获取七牛地址
	 *
	 * @param fileType
	 * @return
	 */
	String getShowUrlByFileType(String fileType);

	/**
	 * 清理垃圾
	 *
	 * @param clean
	 */
	Map<String, Integer> cleanUp(String clean);

	/**
	 * 文件上传回调方法
	 */
	void fileSaveCallBack(String upPutPolicyStr);

	/**
	 * copy本地附件到目标环境
	 */
	Map<String, Integer> copyFileToTargetEnv(String tables, String env);

}
